import {
  endsTimeAnimation,
  settimeNth,
  toStringTypeCheck,
} from '../../../../../../global/Func/uniFunc/Func';
import { disappear_focusDisplay_cla } from '../../DataDefine/sourceData';
import { focusDisplay_dataMana } from './cla_focusDisplay_dataMana';

const focusDisplay_operateTag = 'focusDisplay_operate';

class focusDisplay_operate extends focusDisplay_dataMana {
  get [Symbol.toStringTag]() {
    return focusDisplay_operateTag;
  }

  /**
   *
   * @param {HTMLElement} targetEl 焦点元素
   */
  constructor(targetEl) {
    super(targetEl);
  }

  /**
   * 将 当前 元素 升级为 全屏
   *
   * 应用 进入动画
   */
  display() {
    if (!document.fullscreenEnabled) {
      console.log('current Dom is not allowed full screen');
      return;
    }

    this.targetEl.showModal();
  }

  /**
   * 将 当前 元素 回退 原本 位置
   *
   * 应用 退出动画
   *
   * 退出 动画 后 执行 cb
   */
  cancle(cb) {
    let delay = endsTimeAnimation(this.targetEl, disappear_focusDisplay_cla);

    settimeNth(delay, () => {
      // console.log(this.targetEl);
      if (toStringTypeCheck(cb, 'function')) {
        cb();
      }
      this.targetEl.close();
    });
  }
}

export { focusDisplay_operate };
